package com.li.onjava8.concurrent.under.atomic;

import java.util.Arrays;

/**
 * 为了测试 SerialNumbers，我们将创建一个不会耗尽内存的集合
 * add() 和 contains() 方法是线程同步的，以防止线程冲突。
 */
public class CircularSet {
    private int[] array;
    private int size;
    private int index = 0;

    public CircularSet(int size) {
        this.size = size;
        array = new int[size];
        Arrays.fill(array, -1);
    }

    public synchronized void add(int i) {
        array[index] = i;
        index = ++index%size;
    }

    public synchronized boolean contains(int val) {
        for (int i = 0; i < size; i++) {
            if (array[i] == val) return true;
        }
        return false;
    }
}
